Method and System for Reliable Big Capacity Storage System Protected by Triple Protection

ABSTRACT

The method delivers a storage system for Big Data usage. The system contains a matrix of unreliable physical data devices and data in this reliable big capacity storage system is protected by the triple protection so the method and system can protect storage system from more than 2 fault data devices. In some cases, the system can still deliver data when system has many failed data devices at the same. Floating Parity technology can also avoid heavily writing data to some device surfaces, due to parity update, which cause data device to be failed before expected device life time.

BACKGROUND OF THE INVENTION

In current technology, the storage is protected from limited number of faulty devices. In common practice, the majority of storage products can only protect up to 2 faulty devices. In such case, if 3 devices in one row are failed at the same time, loss of data occurs. The scenario of 3 faulty data devices at the same time in the same row is treated as impossible case. However, in the reality, it happens especially after running storage system for more than 5 years when devices in the system are about running out of guaranteed life time. In such cases, multiple faulty data devices can be triggered during recovering 1 faulty device. It is because, when one device is dead, many other data devices in the same shelf are also very weak and easily to run to death. This invention delivers a method to create a reliable storage system that can prevent file system failure due to more than 2 device failures.

SUMMARY OF THE INVENTION

This invention delivers a method to protect storage system when storage system may have more than 2 failed data devices at the same time. The method is to use triple protection to protect storage system. This triple protection is implemented by a method so the storage system is protected in 2 directions and 2 layers. The protection in 2 directions can recover storage system when N devices are failed at the same time as long as no more than 2 faulty devices in both directions at the same time. If the protection in 2 directions is not able to protect storage system in very rare case, protection in second layer can still recover storage system. So the method in this invention provides a greatest protection to file system.

This invention also delivers a method to reduce device failure by Floating Parity technology which distributes data write operations to different area to avoid some data device surfaces to be used much more often than others. This Floating Parity method can prevent a particular data device having a greater chance of device failure than other devices in the system. This is an efficient way to help devices to run longer time.

In general, the storage system described in this invention consists of several Big Data Devices and each Big Data Device contains a matrix of data devices protected by row and column parity in Floating Parity technology. This invention describes a method to provide not only a huge capacity of storage system but also very reliable storage system.

BRIEF DESCRIPTION OF DRAWINGS

PIC 1A & 1B is a diagram showing an embodiment of Reliable Big Capacity Storage System

PIC 2 is a diagram showing an embodiment of Big Data Device

PIC 3A to 3B shows the Matrix of Device in Big Data Device

PIC 4 presents a logical diagram of Big Data Device

PIC 5A to 5C shows an embodiment of Floating Parity

PIC 6A to 6G shows an embodiment of Floating Parity

PIC 7A & 7B shows an embodiment of Floating Parity

PIC 8A & 8B shows an embodiment of Floating Parity

PIC 9 shows high level architecture of Big Data Device

PIC 10 shows different modules in Data Controller

DETAILED DESCRIPTION

This invention will now be described in detail with various embodiments, examples by references to related figures. While the disclosure of the invention will be described in conjunction with the exemplary embodiments provided below, the invention are not intended to limit the embodiments. On the contrary, the disclosure is intended to cover all parts of the invention as defined by the appended claims. Furthermore, in the following detailed description, numerous details are set forth in order to provide a thorough understanding of the invention. In other instances, well-known methods and procedures have not been described in detail as they are not aspects of this invention.

This invention provides a method to create a Reliable Big Capacity Storage System, comprised of many Big Data Devices built with many unreliable physical devices in small capacity. When accessing data on Big Data Device, there is no difference from accessing physical device in small capacity. So, this Big Data Device is still a device for data, similar with physical device, but a much reliable data device and gives huge data space. When a physical device in small capacity inside of a Big Data Device is fault, the Big Data Device will still be available in delivering requested data. Also, when the fault physical device is replaced with good device in hot spare pool, this Big Data Device automatically recovers data on this physical device. This invention also provides a method so Big Data Device can still provide requested data when more than 2 physical devices in one row inside Big Data Device are fault at the same time, and data on physical devices can be recovered after replacing bad physical devices with good ones. This invention also provides a method so data writing to Big Data Device are properly distributed to different blocks in different physical device.

Big Data Device described in this invention is constructed by many physical devices in small capacity. All these physical devices are logically organized into a matrix, N physical devices in a row by M rows. This is showed in PIC 2. A matrix of devices (MOD 203 in PIC 2) is comprised of many data devices (DD in PIC 2). The big data space (BDS 202 in PIC 2) presents a big data capacity of this Big Data Device (BDD 201 in PIC 2). The persistent parity cache for parity X (PPCX 204 in PIC 2) is a temporary space in memory to cache active parity in row in the matrix, while the persistent parity cache for parity Y (PPCY 205 in PIC 2) is a temporary space in memory to cache active parity in column in the matrix. The row parity and column parity provide data protection in 2 directions.

Bid Data Devices (BDD in PIC 1A & 1B) in storage system (PIC 1A & 1B) are grouped together and presented to application server or file server as a file system. However each of Big Data Device has very large data space too, much bigger than a single physical device. All Big Data Deices are protected by well known protection method, like row parity system, or called as Redundant Array of Inexpensive Disks. This gives a protection at different system layer so storage system is protected by 2 layer protection. The first layer protection is the protection inside Big Data Device, called as 2 direction protection, and second layer protection is in storage system layer, among all Big Data Devices, by Redundant Array of Inexpensive Disks. The second layer protection is presented in PIC 1A, with 1 parity, or PIC 1B, with 2 parities.

PIC 3A and 3B give a close look at matrix of devices (MOD 302 in PIC 3). Big data space (BDS 301 in PIC 3A) is a virtual presentation of data space backed up by MOD.

Each data block in BDS is referred to a particular data block in a data device (DD in PIC 3A) inside of matrix of device (MOD 302 in PIC 3A). As showed in PIC 3A, data block 311 d in PIC 3A is referred to data block in DD 311 in PIC 3A. And data block 312 d at next logical block address (LBA) in BDS is referred to data block 312 on next data device in the same row, and so on.

Data block in data device (DD in PIC 3A) is protected by parity blocks, row parity and column parity. This is described in PIC 3B. PIC 3B shows parity blocks in both row and column. However, parity block (pbx in PIC 3B) in a row is not necessary to be most right data device (DD in PIC 3B) at that row, and parity block (pby in PIC 3B) in a column is not necessary to be the bottom data device (DD in PIC 3B) at that column. The pbx can be in any data device in that row, and pby can be in any data device in that column. As described in PIC 3B, pbx in row 2 (312 pbx in PIC 3B) can be in second data device in second row, while pby in column 2 (332 pby in PIC 3B) can be in third data device in second column. All row parity blocks on the same row of data devices are not necessary to be on the same data device. These row parity blocks in the same row can be spread on any data device in that row, and, of course, all can also be on one particular data device on that row. So do all column parity blocks. Writing all parity blocks in one row into one particular data device is one special case. So do all column parity blocks. This, writing parity block to different data device, is called Floating Parity method. Floating Parity is to avoid writing parity block into a particular data device because parity block is updated very often than data device.

In PIC 4, diagram is redrawn to present matrix of device (MOD 401 in PIC 4) logically, so all parity blocks (411 pbx, 412 pbx, 413 pbx, 431 pby, 432 pby, and 433 pby in PIC 4) are moved out of MOD, and are grouped together to be one logical parity device (PBX or PBY in PIC 4). However, in Big Data Device system, there may, or may not, be a specific parity device in MOD to keep all parity blocks in that row of data devices or in column. Put parity blocks outside of MOD purely for showing the relationship between parity block (pbx and pby in PIC 4) and persistent parity cache (PPCX 402 and PPCY 403 in PIC 4). As it is showed in PIC 4, most recent parity blocks, called active parity blocks, are resided in cache in persistent memory for performance enhancement. The active parity blocks in PIC 4,

-   -   411 c is a copy of 411 pbx,     -   412 c is a copy of 412 pbx,     -   413 c is a copy of 413 pbx,     -   431 c is a copy of 431 pby,     -   432 c is a copy of 432 pby,     -   and 433 c is a copy of 433 pby,         are kept in persistent parity cache. The active parity blocks in         persistent parity cache are written to parity block (PBX and PBY         in PIC 4) when system needs to write multiple data blocks in         that row or column, or after a period of time when active parity         block is old enough. That is, when few data block is written         with new data to data devices in a row, new parity block is         written to persistent parity cache (PPCX or PPCY in PIC 4). When         more data blocks in that row are written with new data or after         a period of time, write parity blocks into device. In such way,         the number of writing operation for parity block can be reduced.         This is very important and efficient way to keep data device         live longer when data device is a solid-state drive as an         example.

This invention describes a method in organizing data devices in matrix and also defines a method in arranging parity block. The parity block is generated in well known approach. However, in this invention, parity block is not saved on a fixed physical data device. This is called as Floating Parity. The Floating Parity algorithm selects the location of parity block randomly, or in sequence in a list of all available device blocks. Along with persistent parity cache, Floating Parity can reduce large number of write operation to a particular data device to increase the life time of data device.

The PIC 5A to 5C are embodiments of Floating Parity method. In PIC 5A, the embodiment shows how Floating Parity method select a device block to write parity block and a device block to write a new data block in that row. As showed in PIC 5A, device blocks D1, D2, D3, . . . , and Dn are blocks in a row. The dark boxes D1, D2, . . . , Di−1 on the left side are blocks on data devices with data already. The dark box Di/P0 on the left side is a block Di that has original parity block P0. The white boxes Di+1, Di+2, . . . , Dn on the left size are empty blocks, blocks with initial value. After write a new data block into this row, this new data block is written to device block Di that is originally for parity block P0. With such write operation, a new parity block is generated. This new parity block P1 is written to next empty device block Di+1 in row. That is, when storage system has empty blocks, storage system always writes new data block to device block that has previous parity block, and new parity block is written to next empty block, picked in sequence from all empty blocks. The new parity block can be generated by well-known method with all data blocks or just simply do P1=P0+Di where ‘+’ is special operation for parity generation.

The PIC 5B describes an embodiment when previous parity block PO is in the last device block Dn in a row of device blocks. It means, previous written data block is in device block D(n−1). This situation is showed on the left side of PIC 5B. In this embodiment, it also showed that data block Di and Di+1 are free blocks, that is these 2 data blocks have had data before but they are freed in the storage system later so these 2 data blocks are free and ready for new data blocks. If Floating Parity method is going to locate next device block, then the next device block is block Di. So, after writing new data to block Dn, new parity block is generated and is written to device block Di. It is showed on the right side of PIC 5B.

The PIC 5C describes another embodiment. In general situation, after storage system runs for a certain period of time, the parity block P0 can be in any device block Dj, and this row has free device block Di and Di+1. This general situation is showed on the left side of PIC 5C. Then, the new data is always writing to last location for original parity block, Dj/P0 on the left ride of PIC 5C. That is, the previous parity block is in device block Dj with parity block P0. The new data is written to data block Dj showed on right side of PIC 5C, and new parity block P1 is written to next free device block Di on the right side of PIC 5C.

In general, above embodiments in PIC 5A to 5C show that, Floating Parity method picks up device block with previous parity block for writing new data block, newly generated parity block is written to next free device block. So, device block with parity block is a latest written device block. That is, there is no a particular device block in a row or column specifically for parity block. In another way to say, parity block is floating in device blocks in a row or column. Since parity block is updated much more often than any other data block, Floating Parity method can efficiently avoid having too many writing operations to a particular device block.

The PIC 6A to 6G are embodiments that show how device block is picked up by Floating Parity method to write data block into a matrix of devices in 4 rows by 4 columns, until all device blocks in matrix are all written once at least. The D1-D9 are data blocks written to device blocks in sequence. The Px1-Px3 are parity blocks in row of data blocks. The Py1-Py3 are parity blocks in column of data blocks. PIC 6A is an embodiment that shows data block D1 is written to the matrix. PIC 6B shows the matrix after D2 is written to the matrix. All of PIC 6C to PIC 6G show how 4 rows by 4 columns matrix looks like after each data block is written to the matrix. With Floating Parity method, write operations are properly distributed to different device blocks.

The PIC 7A and 7B are embodiments that show how a new data block D10 is written into matrix when next freed device block is device block that previously has data block D4 in PIC 7A. In such situation, device block with parity block Py1 in PIC 7A is last written place in that column so new data block D10 in PIC 7B is written to this device block. Because device block with data block D4 in PIC 7A is a freed device block and it is picked for next write operation by Floating Parity method, new column parity block Py1 in PIC 7B is written to this device block. The row parity block Px2 is also updated and written to the same device block.

The PIC 8A and PIC 8B are embodiments that show how next new data block D11 is written into the matrix when next freed device block is device block that previously has data block D8 in PIC 8A. In such situation, device block with parity block Py2 in PIC 8A is last written place in that column so new data block D11 in PIC 8B is written to this device block. Because device block with data block D8 in PIC 8A is a freed device block and it is picked for next write operation, new column parity block Py2 in PIC 8B is written to this device block. The row parity block Px3 is also updated and written to the same device block.

The PIC 9 shows an important part of Big Data Device (BDD in PIC 9), called as Data Controller. The Data Controller has 2 ports for data I/O in front and connections in the back to all shelves of data devices. The Data Controller receives data I/O from one of these 2 ports and delivers data I/O to one of these data devices. These 2 ports are all active ports so both of them can be used for data I/O at the same time. When one port is in error, another port is still available for data I/O. These 2 ports are not Active-Standby ports so there is no port failover mechanism. The higher level controller (File System Controller in PIC 1) will take care of I/O switchover. That is, when File System Controller in PIC 1 discovers path error on one path to one port, File System Controller will automatically switch data I/O on that path to another path to another port to make data I/O success. The problematic path to one port will be handled by support engineer for fixing possible hardware failure.

The PIC 10 shows more details on Data Controller. It has 5 modules: Monitor Module, Management Module, 2 Data I/O Modules, and Device Access Module. Each module performs its own functions. Monitor Module performs health check on Big Data Device, recover faulty data device, etc. Management Module performs management or configuration tasks for Big Data Device. Each Data I/O Module has one port to receive data I/O, figure out the right device for read or write, and pass operation to Device Access Module. The Device Access Module works with shelf of data devices to perform either read or write operation.

In general, embodiments of the invention relate to a method in storing data in Big Data Device. This Big Data Device provides a much big capacity of data space than a single physical data device. With 2 layer protection, Reliable Big Capacity Storage System provides a much reliable file system to avoid data loss due to possible multiple physical devices failures. The Big Data Device can be used as a single data device to replace a single physical device for a file system, and also can be grouped together to build a reliable file system. This Big Data Device consists of a matrix of devices protected by row parity and column parity with Floating Parity technology. The row parity and column parity provides a capability of recovering multiple failed physical data devices, for more than 2 physical data devices in a row or a column. Another protection in storage system protects data when Big Data Device is failed unexpected. Also, Floating Parity is different from other well known parity technology in practice. Floating Parity utilizes common well known algorithms to generate parity block, and write parity block into next available data block in a row of data devices or a column of data devices. In such way, writing operation is properly distributed to different device blocks, to avoid frequently write operation onto a particular data device that causes high risk of data device failure. The limited number of embodiments of this invention describes this invention but not all parts of this invention. The scope of this invention should be limited by the attached claims. 

What is claimed is:
 1. A method of Reliable Big Capacity Storage System provides a reliable big space for a file system. Reliable Big Capacity Storage System groups many Big Data Devices together while Big Data Device consists of many data devices organized logically in a matrix, a form of many rows while each row has many data devices. Data in Reliable Big Capacity Storage System is protected by triple protections. The triple protection includes row and column parity with Floating Parity technology and higher level protection. The row and column parities in Floating Parity protect data in Big Data Device. To give another level of protection, Big Data Devices are organized together to become a storage system. At this storage system layer, another protection is added.
 2. The method of claim 1, wherein Big Data Device has a matrix of data devices that is N data devices in a row with M rows. In such way, the matrix of data devices consists N times M data devices. The data devices in the matrix logically refer to physical devices. In addition to these data devices in the matrix, Big Data Device has several more data devices for hot spare devices.
 3. The method of claim 2, wherein data device in matrix can be mapped to any form of physical device, like Hard Disk drive, Solid State drive, Flash drive, or any other form of media. High performance physical device gives Big Data Device high performance.
 4. The method of claim 2, wherein the matrix of N times M data devices can be, but not necessary, directly mapped to a physical matrix of physical devices. The mapping is one to one mapping, that is, one data device in matrix is mapped to one physical device in physical matrix, but no more than 1 data devices can be mapped to the same physical device. The physical matrix of physical devices can be N shelves of M devices in each shelf, or M shelves of N devices in each shelf. Also data device in matrix can be mapped to any physical device in any device shelf, or data device in matrix can be mapped to a virtual device on internet.
 5. The method of claim 2, wherein hot spare devices in Big Data Device are used to replace any faulty data device in matrix. A well known reconstruction method, by using parity, is used to reconstruct data for recovering data of faulty physical device. There is no physical device movement when replacing faulty data device in matrix. The mapping between physical device and logical data device in matrix is updated to have a new matrix with new data devices.
 6. The method of claim 2, wherein data in the matrix of data devices is protected by row parity and column parity. This is a protection in layer of Big Data Device. This is also a double protection, row parity and column parity.
 7. The method of claim 6, wherein row and column parities are generated by a well-know method, and written to a device as parity block into a device block selected by a method called as Floating Parity, in which the row or column parity can be on any device block in any device.
 8. The method of claim 7, wherein locating next device block for parity block by the method Floating Parity is to find out next available device block for current parity data. The next available device block is a free device block in the same row or same column of devices. The free device block can be either unused device block or released device block. A released device block is a block that has data before and becomes free later. The next available free device block is the one that can be selected from all free device blocks. The next one can be selected either in the order of physical address (LBA) or in a random method. The next available device block can be on any device in the same row or same column.
 9. The method of claim 7, wherein new data block can be written to any free device block. Since current parity block is obsolete after new data block arrive, device block for current parity block becomes a free device block and can be an available device block for writing new data block.
 10. The method of claim 7, wherein, if the Big Data Device has any initial device block (a block with initial value and never be written with user data yet) on any data device in matrix, write new data block into one of those unused device blocks first. If all device blocks on all data devices have all valid data (data is a part of file system) or obsolete data (block was written at least once but data was removed later), the free device block (block with obsolete data) is used for new parity block.
 11. The method of claim 8, wherein the previous parity block can be row parity block or column parity block. An algorithm is used to decide whether row parity block or column parity block is selected for writing new data block. The algorithm is based on the configuration.
 12. The method of claim 2, wherein Big Data Device receives data I/O via Data Controller. The Data Controller has 2 active ports to receive different data I/O at the same time, and deliver data I/O to shelves of physical devices. The Big Data Device contains the mapping between data device in matrix and physical device.
 13. The method of claim 12, wherein both ports are active ports so both ports can serve as data I/O receiver (for write operation) or sender (for read operation). The read or write operation is completed by Data Controller. However, Data Control does not control unique source of read or write to a particular data block in specific LBA (Logical Block Address). The application or file server takes the responsibility to make sure that a specific data block has only one owner. If 2 operations to a particular data block come from different ports around the same time, there is no guarantee that which operation will be performed first.
 14. The method of claim 12, wherein Data Controller in Big Data Device does not provide a failover mechanism on these 2 ports. Both 2 ports are all active ports and perform the same function. The File System Controller can use these 2 active ports for load balancing or use another one as alternative port. If Big Data Device is used to replace a single physical device in a storage system from other vendor, one of these 2 ports can be used for standby port and the storage system does path switch if one path is failed.
 15. The method of claim 12, wherein Data Controller has multiple modules to perform different tasks. Data Controller does health monitor, faulty device recovery, system management and configuration, receiving I/O request (read or write), and complete data I/O operation.
 16. The method of claim 15, wherein Monitoring Module does health monitoring and faulty device recovery of Big Data Device.
 17. The method of claim 15, wherein Management Module does management and configuration of Big Data Device.
 18. The method of claim 15, wherein Data Access Module does I/O operation with physical device.
 19. The method of claim 15, wherein each Data I/O Module has one port to perform read or write operation from File System Controller or storage system from other vendors.
 20. The method of claim 1, wherein all Big Data Devices are grouped together and managed by File System Controller that delivers a file system to host like application server or file server.
 21. The method of claim 20, wherein a protection is delivered by organizing all Big Data Devices into a storage system. All Big Data Devices are organized and protected by parity in a well known method, Redundant Array of Inexpensive Disks. One method is using one Big Data Device for parity. For some special case, two Big Data Devices can be used for 2 parities for extra protection. This provides storage system a capability to recover storage system when a particular Big Data Device is in failure.
 22. The method of claim 21, wherein the recovery is using a well known method to reconstruct data when Big Data Device in faulty. Once failed Big Data Device is recovered, all data on this recovered Big Data Device will be reconstructed. 